package cn.iocoder.yudao.module.resource.service.points;

import cn.iocoder.yudao.module.resource.dal.dataobject.points.ResourcePointsRecordDO;

import javax.validation.Valid;
import java.util.List;

/**
 * 积分记录 Service 接口
 *
 * @author 芋道源码
 */
public interface ResourcePointsService {

    /**
     * 创建积分记录
     *
     * @param pointsRecordDO 积分记录信息
     * @return 记录ID
     */
    Long createPointsRecord(@Valid ResourcePointsRecordDO pointsRecordDO);

    /**
     * 获得积分记录
     *
     * @param id 记录ID
     * @return 积分记录
     */
    ResourcePointsRecordDO getPointsRecord(Long id);

    /**
     * 根据创作者ID获得积分记录列表
     *
     * @param creatorId 创作者ID
     * @return 积分记录列表
     */
    List<ResourcePointsRecordDO> getPointsRecordListByCreatorId(Long creatorId);

    /**
     * 计算创作者的总积分
     *
     * @param creatorId 创作者ID
     * @return 总积分
     */
    Integer calculateTotalPoints(Long creatorId);

}
